iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 14
0
Modern Web

關於你關於我關於phaser系列 第 14

Day 14 塔防遊戲 ~ 敵人出現

  • 分享至 

  • xImage
  •  

再來會稍微複雜一點,我們要創造一個會移動的敵人

  • 創造敵人

先建立一個空的敵人類別

var Enemy = new Phaser.Class({
 
        Extends: Phaser.GameObjects.Image,
 
        initialize:
 
        function Enemy (scene)
        {
            Phaser.GameObjects.Image.call(this, scene, 0, 0, 'sprites', 'enemy');
 
        },
        update: function (time, delta)
        {
            
        }
});

我們的類別都是繼承於 Phaser.Class 下的其他類別,這個就是繼承 Phaser.GameObjects.Image ,並且我們會初始化此類別

再來在初始化的地方加入

function Enemy(scene){
    // ...
    this.follower = { t: 0, vec: new Phaser.Math.Vector2() };
}

t 爲相對於路線 0~1 的數字 、 vec 則是各個時間點的座標

再來加入我們的方法

startOnPath: function ()
    {
        this.follower.t = 0;
        path.getPoint(this.follower.t, this.follower.vec);
        this.setPosition(this.follower.vec.x, this.follower.vec.y);
    }

先預設敵人一開始的位置

update: function (time, delta)
    {
        this.follower.t += ENEMY_SPEED * delta;
        path.getPoint(this.follower.t, this.follower.vec);
        this.setPosition(this.follower.vec.x, this.follower.vec.y);
        if (this.follower.t >= 1)
        {
            this.setActive(false);
            this.setVisible(false);
        }
    }

並在更新時每次畫上下一次敵人要在的位置

並且在全域宣告敵人的速度 ( ENEMY_SPEED ),這邊說是敵人速度是因爲,他是數字越大數字越快,這邊的算法是相對於路線(整段是 0~1 ),他每次渲染就會加一次 ENEMY_SPEED ,當 follower.t >= 1 就會消失(因爲已經離開路線了)

var ENEMY_SPEED = 1/10000;

初始化完敵人類別,要將創造出來的實例加入我們的地圖裡

function create(){
    // ...
    enemies = this.add.group({ classType: Enemy, runChildUpdate: true });
    this.nextEnemy = 0;
}

並且在每次創造出一個敵人時,多久後要出現下一個敵人

function update(time, delta) {  
    if (time > this.nextEnemy)
    {        
        var enemy = enemies.get();
        if (enemy)
        {
            enemy.setActive(true);
            enemy.setVisible(true);
            enemy.startOnPath();
            
            this.nextEnemy = time + 2000;
        }       
    }
}

這樣就可以有敵人慢慢跑出來了,並且可以嘗試去修改路線敵人速度敵人間距,就可以比較知道一些參數的設定,這個在之後的模組化會比較快上手

學習的網站
我的github


上一篇
Day 13 塔防遊戲 ~ 畫出路線
下一篇
Day 15 塔防遊戲 ~ 建立炮塔
系列文
關於你關於我關於phaser30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言